﻿/******************************************************************************
 * 【本类功能概述】                                 					      *
 *  版权所有（C）2017- 匠梦科技                                         *
 *  保留所有权利。                                                            *
 ******************************************************************************
 *  作者 : <hughjk>
 *  创建时间:2019年5月19日 14:59:28
 *  文件描述:扩展代码
 *****************************************************************************/

using System;

namespace Util
{
    /// <summary>
    /// 状态机
    /// </summary>
    public class uFsm<T> where T : Enum
    {
        public Mdic<T, uState<T>> AllState = new Mdic<T, uState<T>>();
        public T CurId;

        public void Add(uState<T> state)
        {
            AllState.SetOrAdd(state.id, state);
        }

        public void Start(T id)
        {
            CurId = id;
            AllState[id].Start();
        }

        public void Updata()
        {
            AllState[CurId].Updata();
        }

        public void Switch(T id)
        {
            AllState[CurId].End();
            AllState[id].Start();
            CurId = id;
        }
    }

    public class uState<T> where T : Enum
    {
        public T id;

        public uState(T id)
        {
            this.id = id;
        }

        public virtual void Start()
        {
        }

        public virtual void Updata()
        {
        }

        public virtual void End()
        {
        }
    }

}